import React, { useEffect, useState } from "react" import CommonSchema from "@/components/CommonSchema" import DefaultLayout from "@/layouts/DefaultLayout" import { useRouter } from "next/router" import CorePages from "@/components/CorePages" import CubeSpinner from "@/components/CommonBgs/CubeSpinner" import { ParsedUrlQuery } from "querystring" import CommonError from "@/components/CommonError" const ModulePage = () => { const router = useRouter() const [ready, setReady] = useState(false) const [error, setError] = useState(false) const [errorMsg, setErrorMsg] = useState("") const { group, name } = router.query as ParsedUrlQuery function showError (msg: string) { setReady(true) setError(true) setErrorMsg(msg) } useEffect(() => { ;(async () => { if (!group || !name) return // waiting or not exists // return showError(`group or name not exists`) try { // @ts-ignore let { security } = await import(`bunadmin-plugin-auth`) if (!security) return showError(`security required 'bunadmin-plugin-auth'`) setError(false) await security({ setReady, router }) } catch (e) { showError(e.toString()) } })() }, [group]) if (!ready) return let render switch (group) { case "core": render = break case "user": switch (name) { case "sign-in": case "sign-up": case "recovery": // skipped Layout return default: render = } break default: render = } if (error) render = ( ) return {render} } export default ModulePage